cellrendererpixbuf: Don't eat states
authorBenjamin Otte <otte@redhat.com>
Thu, 5 Sep 2013 16:45:13 +0000 (18:45 +0200)
committerBenjamin Otte <otte@redhat.com>
Thu, 5 Sep 2013 16:48:47 +0000 (18:48 +0200)
Even when not following states, blacklist the states we don't follow
instead of whitelisting the ones we do. This way, we don't accidentally
eat new ones like the text direction flags.

Fixes a bug where text direction wasn't available when rendering stock
items.

https://bugzilla.gnome.org/show_bug.cgi?id=702423

gtk/gtkcellrendererpixbuf.c

index 1ae79950e1e021133ee4a195a5854e8b384206ac..1af8c423eaf60aa2ea05572f1b56a4e79b73fd30 100644 (file)
@@ -531,13 +531,10 @@ gtk_cell_renderer_pixbuf_render (GtkCellRenderer      *cell,
   context = gtk_widget_get_style_context (widget);
   gtk_style_context_save (context);
 
-  state = GTK_STATE_FLAG_NORMAL;
+  state = gtk_cell_renderer_get_state (cell, widget, flags);
 
-  if (priv->follow_state)
-    state = gtk_cell_renderer_get_state (cell, widget, flags);
-  else if (!gtk_widget_get_sensitive (widget) ||
-      !gtk_cell_renderer_get_sensitive (cell))
-    state |= GTK_STATE_FLAG_INSENSITIVE;
+  if (!priv->follow_state)
+    state &= ~(GTK_STATE_FLAG_FOCUSED | GTK_STATE_FLAG_PRELIGHT | GTK_STATE_FLAG_SELECTED);
 
   gtk_style_context_set_state (context, state);
   gtk_style_context_add_class (context, GTK_STYLE_CLASS_IMAGE);